﻿using System;
using System.Collections.Generic;

using System.Text;

namespace Rance.Battle
{
    class 队伍状况
    {
        public 队伍状况()
        {
            ID = Guid.NewGuid();
            队伍 = new 队伍();
            行动结果List = new List<Data行动结果>();
        }

        public Guid ID { get; set; }

        public 战场 战场 { get; set; }
        public 队伍状况 对手状态 { get; set; }
        public 队伍 队伍 { get; set; }

        public Data战斗胜负 战斗胜负 { get; set; }
        public bool IsUser { get; set; }
        //public bool IsStart { get; set; }
        public bool IsControlByComputer { get; set; }

        public int 战场修正 { get; set; }

        public int 战果 { get; set; }

        public bool 是否行动结束
        {
            get
            {
                foreach (var item in 队伍.成员List)
                    if (!item.是否败退 && (!item.是否完结 || item.是否准备) )
                        return false;

                return true;
            }
        }

        public bool 是否败退 
        {
            get 
            {
                foreach (var item in 队伍.成员List)
                    if (!item.是否败退)
                        return false;

                return true;
            }
        }

        public int 获得战果(int value)
        {
            int 加值 = value;
            this.战果 += value;
            if (this.战果 > 常量.最大战果)
            {
                加值 -= this.战果 - 常量.最大战果;
                this.战果 = 常量.最大战果;
            }
            else if (this.战果 < 常量.最小战果)
            {
                加值 += 常量.最小战果 - this.战果;
                this.战果 = 常量.最小战果;
            }
            
            this.对手状态.战果 = 0 - this.战果;

            return 加值;
        }

        public void 获得战场修正(int value)
        {
            this.战场修正 += value;
            this.对手状态.战场修正 -= value;
        }

        public List<Data行动结果> 行动结果List { get; set; }

        public void Add(Data行动结果 data行动结果)
        {
            行动结果List.Add(data行动结果);

            Data行动结果 data行动结果_对手 = new Data行动结果();
            data行动结果_对手.角色 = data行动结果.角色;
            data行动结果_对手.是否己方 = !data行动结果.是否己方;
            data行动结果_对手.技能 = data行动结果.技能;
            data行动结果_对手.ResultList = data行动结果.ResultList;

            this.对手状态.行动结果List.Add(data行动结果_对手);
        }
    }
}
